/**
 * 转换对象，将在 target 对象中存在的 origin 对象中属性的属性值
 * 复制到 target 对象中相应的属性上<br/>
 * 需要注意的是，对于对象中复杂类型属性的属性值，只会将属性值的引用赋值给 target 对象中相应的属性<br/>
 *
 * @param {Record<string, any>} origin 原始对象
 * @param {Record<string, any>} target 目标对象
 * @returns {T} 属性赋值后的目标对象
 */
export const convert = <T>(origin: Record<string, any>, target: Record<string, any>): T => {
  // 遍历 target 对象中的所有属性
  for (let key in target) {
    // 如果 target 对象中没有该属性，则跳过
    if (!Reflect.has(origin, key)) continue
    // target 对象中有该属性，则将 origin 对象中相应的属性值赋值给 target 对象中相应的属性
    target[key] = origin[key]
  }
  return target as T
}
